約 2,202,322 件
https://w.atwiki.jp/csjake/pages/124.html
道路を作ってみよう 1.適当なマップを開きます。 2.RollupBarのTerrainタブにあるMisc→Roadをクリック。 3.マップ上でクリックして道路を作っていきます、終了するにはダブルクリックします。 4.道路を選択した状態でEditボタンをクリックすると形状や傾きの編集が出来ます。 ポイントを選択してマウスを動かせば形状を変えられます。 またEdit下のAlign height Mapボタンをクリックすると道路に合わせて地形が自動で調整されます。 5.思い通りの形になったら最後にマテリアルを適用しましょう。ツールバーのView→Open View Pane→Material Editorでマテリアルエディタを開きます。materials\terrain\road\にあるroad_concrete_stripes_solid_sides_darkerを選択し(他のものでも構いません)左上にあるアイコンをクリックして適用します。 完成
https://w.atwiki.jp/torauto/pages/10.html
Ruger 77 s MOD タイトル 九十九式短小銃(Type99) 作者 5yen 更新日時 2005/10/2 ファイル ダウンロード 容量 0.7KB 効果 みためが旧日本陸軍の九十九式短小銃になる。いじくったらスプリングフィールドとかにもなると思う。 備考 バックアップを忘れずに。
https://w.atwiki.jp/alienswarmsource/pages/30.html
スレ TIPS Youtubeで「Alien Swarm SDK tutorial」で検索すると解説動画がいろいろ出てくる(英語だけど)。 エスケープエリアの作り方 1. Entityでasw_objective_escapeを作成、適当に名前を付ける 2. triggerで脱出ゾーン作ってtrigger_multipleに変更 3. OutputsでOnTrigger 1の奴 MarineInEscapeAreaと設定 4. やらんでも自動で付いてるだろうけど、FlagsでMarinesにチェック 5.気が向いたらasw_markerをエリアに合わせて設置 botとキャンペーンマップをプレイ コンソールにasw_show_all_singleplayer_maps 1、オフラインプレイ 疾走する乗り物の上で戦いたい prop_dynamicで乗り物設置 player clipで足場を作ってfunc_brushに設定 nodrawでfunc_tracktrainを作成してpath_trackを適当に置く 乗り物と足場の親をfunc_tracktrainにする 本家翻訳 Getting Started スタート Downloading and Installing the Alien Swarm Authoring Tools オーサリングツールDLとインスコ Swarm Campaign Add-on Tutorial キャンペーン チュートリアル Mapping マッピング Your first Alien Swarm map? 初めてのマップ Swarm Mapping basics? マップ基礎知識 Swarm Objectives? マップコントロールオブジェクト Swarm Overview Map? オーバービュー マップ Swarm Placing Doors? ドア付け方 Swarm TileGen? タイルジェネレーター Programming プログラミング Swarm SDK Create a Mod? MODを作り始める Swarm C++ Code Overview? C++オーバービュー Reference リファレンス Swarm Debug Commands デバッグコマンド
https://w.atwiki.jp/titanquest/pages/52.html
お手軽MOD お手軽MOD はじめに 実行解説 用意する物 手順1 『解凍』 手順2 『置き換え』 手順3 『ArtManagerでデータ改変』 手順3.5 『弄る』 手順5 『database再加工』 手順6 『差し替えて起動』 完 改造したTQはシングルorLANでしか遊べないので注意。 はじめに ArchiveEditorなどを使って、イチからMODを作ろうとすると死ぬほど手間が掛かる。 でも、なんとか設定だけでも弄って、自分だけのTQを作れないだろうか? 具体的に何をするのかと言えば、 『database.arzを書き換えてみる』ということ。 つまりTQのゲームバランスに手を加えるだけの、 インスタントMODの作成について説明するコーナーです。 実行解説 database.arzとは、TQのデータを格納しているアーカイブの一つ。 具体的にどのようなデータを保存しているかというと、 装備品・スキル・モンスターの能力やドロップアイテム、 クエストの報酬といった、ゲームバランスに関係するデータが保存されてる。 こいつらを編集することによって、TQの外観を全く変更することなく、 全く別のゲームバランスでTQを遊ぶことが出来る。 例えば、駄目駄目なSpiritを強化してあげたり、 ただでさえ強力なHuntingをパワーアップさせてみたり、 ユニークなだけで大したうまみのないユニーク共から素敵アイテムをゲットできるようにしたりと様々。 用意する物 1.Titan Quest 2.TQVault(database.arzを解凍するのに必須) 3.取り合えず400Mは空き容量を確保 手順1 『解凍』 database.arzは簡単に説明すれば箱のような物で、 この中にMonsterやSkill、Itemというふうにジャンル分けされたデータが入っているが、 箱の中に入れたままじゃ、中身は差し替えられない。 では最初にdatabase.arzの中身を抽出することから始めよう。 TQVault、普通はTQのキャラクター間でアイテムをやり取りするツールだが、 どういうわけだか、.arzを解答するための機能が搭載されている。 DLは↓からどうぞ。(もし消えてたらググれ。zipがなんだかわからない奴もググれ) http //titanquestvault.ign.com/fms/Download.php?id=1878 TQVaultを起動するには、TQVaultをTQと同じ場所に置く必要がある。 デフォルトパスはC \Program Files\THQ\Titan Quest\ TQVを適当に起動するとExtract database.arzというボタンがるからクリック。 解凍するフォルダを聞かれるので、自分の好きな場所に置く。 例としてC \Program Files\THQ\Titan Quest\DATAに解凍。 ちょっと時間が掛かるの。 取り敢えず前準備の一つは完了。 手順2 『置き換え』 次にデータをコンパイルする時のために、完全なdatabaseを作成しておく。 TQのインストールフォルダにある、ArtManager.exeを起動。 初回起動時に色々と使用するフォルダを聞かれるので、これも好きな場所を選択。 このテストでは上から C \Program Files\THQ\Titan Quest\Work C \Program Files\THQ\Titan Quest\Build を選択。三番目は自動的に読み取られるはずなので弄らなくて良し。 OKをクリックすると、上で選択した場所にフォルダが作成される。 ArtManagerのツールタブからMod Newを選択、これから作るMOD名を入力する。 これはテストなのでやっぱりTestと入力する。 するとさっき作ったWorkフォルダの中に、Custommaps\testというフォルダが出来る。 このtestというフォルダの中に、さらにdatabaseというフォルダがある。 このフォルダは今作ったばかりで空っぽで、これをdatabase.arzとして再加工しても、 からっぽの箱が出来るだけで、なんの意味もない。 というわけで、さっき解凍した箱の中身である、C \Program Files\THQ\Titan Quest\DATAの中身を移し替える。 dataフォルダに先ほどdatabase.arzを解凍した300MBほどのrecordsというフォルダがあるので、 これをC \Program Files\THQ\Titan Quest\Work\Custommaps\Test\databaseにフォルダを丸ごと移動する。 これでようやく、データを弄る前準備が完了する。 手順3 『ArtManagerでデータ改変』 前準備が終わったところで、いよいよデータ改変。 ArtManagerを起動し、Help→InstallTemplatesでテンプレートファイルを読み込む。 次にツールタブのMod SelectにTestという項目が上がっているはずなので選択。 ちょっと読み込みに時間が掛かったら確実に成功。 ArtManager中部にSource Assets Databaseの三つのタブ。 Databaseを選択するとrecordsから派生する色々なツリーが出てくる。 目的のファイルは全てフォルダ名と同様の場所に格納されている。 Creature Item Quest Skillsの4つがメインとなるだろう。 Skills\には下層フォルダとして、色々なMasteryが格納されている。 ここではSpiritを強化していく方針を立てる。 Spiritフォルダを選択すると、さらに4つの下層フォルダのほか、 現行のVer(1.20)で使用されているスキルが、右上のウィンドウに表示されている。 では、最も強力なスキルであるTernionを強化しよう。 Ternionをダブルクリック! すると、何故かエラーが出てエディターが起動しない。 これは自分の固有の環境かもしれないが、 とにかく出来ないので、上位スキルのArcaneLoreを強化することにする。 一覧からternion_arcanelore.dbrをダブルクリックすると、ついにエディタが起動。 (追加 Ternionを弄るとエラーが出るのは、Ternionを記述するために必要なテンプレートファイルが、 何故か存在していないというトンデモエラーによるものらしい。 このエラーを解決しないと、TQ内でTernionを使うことが不可能になってしまう。 また、同様のエラーが全ての召喚系でも起こるため、 自家用アーカイブを作るためには、必ずこのエラーを修正する必要がある。 (IT発売中の現在では、ITのテンプレートを利用することで、 このエラーを防げる可能性がある。要検証。 IT用テンプレートはこちら。 http //www15.atwiki.jp/titanquest?cmd=upload act=open pageid=37 file=TQIT-Templates.rar 修正するには新しいテンプレートファイルを作ってあげればよい。 C \Program Files\THQ\Titan Quest\Work\Databaseにテンプレートファイルの一覧があるので、 適当な発射系スキルのテンプレートをコピペした後、 Editor項目のHeader Classに記述されているテンプレートファイル名にリネームすれば、 Ternionを改造することが出来る。 ただし、ternionはよっぽど変な記述をされているのか、 この方法を使っても、ゲーム中ではTernionのモーションを空振りするだけで、杖による攻撃が出ない……… もう、この方法を解決するには、適当なProjectileを発射するように改造するしかない。 SkillConfig SkillProjectileNameを選択し、 Effect\から適当なProjectileを割り当ててあげれば解決するかも。 ペットが出現しないバグを解決するには、 Template\Monster.tplをコピペした後、Skill_Spawnpetにリネームするだけで解決する) さらに、巨大石像のMonster用のテンプレファイルも存在しない。 必要なファイルはSpiritHost.tpl。 これもMonster.tplをコピペし、同ファイル名に差し替えることで解決可能。 手順3.5 『弄る』 エディターが起動すると、左上に大まかな分類項目、右上に各小項目が並ぶ。 各項目の説明は、おおむねこんな感じ。 Modifier - 消費マナ・リチャージ・効果時間・効果範囲等 Projectileconfig - 発射角度・発射数・貫通確率・作用範囲等 Skillconfig - 習得に必要なマスタリ・最大Lv・ブースト込みの最大Lv その他スキル事の固有数値等 Qualifyingweapons - このスキルを利用できる武器(0-1で制御) Defensive Parameters - 主に防御に関わる項目 Offensive " - 攻撃に関わる項目 Retaliation " - だいたいの場合、反撃に関わる項目 Character " - 作用するキャラクターのステータス変動に関わる項目 Skill " - マナorリチャージコスト減少・発射速度の増加等 Racial Bouns - 特定種族に対するボーナス (細かい項目については、ゲーム用の英語が身に付いてれば何とかなる。または翻訳でググれ) Spiritでも特別特殊なスキルとして存在感を放つTernion。 だがTernion本体を編集しようとするとどうしてもエラーが出るので、 Ternionを強化するには派生スキルのArcaneloreを強化するしかない。 とりあえずArcaneloreをLv1になった時の効果を、 『消費マナ0+前方30度に10WayShot+貫通確率20%+弾速100%Up+Volcanoと同じ爆破範囲+ElementalDdamege50%Up』に変更してあげたいと思う。 まず消費マナから。 Modifier skillmanacostを0に変更。これだけでOK。 (各項目の数字の部分をダブルクリックすると、書き換えモードに変わる。 説明するよりやったほうが早いので、この辺は色々と自分で試す) 次にProjectileconfigにて、発射角度・発射数・貫通確率・爆破範囲を設定。 Launchrotation・Launchnumber・Piercing・explosionradiusの順に該当。 上から30・10・20・3に変更すれば、 『前方30度に・10発分・貫通確率20%の・範囲3の攻撃を発射する』という設定になる。 (実際はThernionの3発があるので13発) 続いて、ElementalDamageの付与に関して、Offensive Parameters Offensive Elemental。 目的の小項目はOffensiveelementalmodifier。 これを50にすることで、攻撃に50%のElementが追加される。 ちなみに50ダメージのElementを追加したいなら、OffensiveelementMinを50にすればよし。 OffensiveMaxを50にし、Minを1にした場合は、 その攻撃のダメージは1~50ということになる。 最後にSkillparameters ProjectileBonus Projectilespeedmodifierを100にすることで、 弾速100%Upの弾に変化する。 ツールタブ File Saveで保存するか、そのままクローズすることで、 変更を保存するかどうかのダイアログ表示に切り替わるのでYesを押せばよし。 ―――――タブの使い方――――― 手入力でデータを弄ると時間が掛かるため、 エディター内のタブツールを使うことで編集を楽に出来る。 Artmanagerで編集したいファイルをダブルクリックすると、エディターが開く。 さらに、パラメータなどの編集したいファイルを選択するともう一つエディターが開く。 このエディターの上部に出てるのがタブ。 上から[SetAll] [Incr All By] [Incl All By%] [Inc By Series]となっている。 上から説明すると、 [一括で指定した数値に設定] [全てに指定した数値を追加] [全てに指定した数値の%を加算] [全てに1の倍数を加算] 例えば、0から始まるステータスにInc By Series 1を入力した場合、 内部データは1-2-3-4-5-6-7-8-9といった内容に書き換えられる。 Lvが上がる事にステータスが変動するスキルなどは、これを使って編集するといい。 なお、数値にマイナスを用いることで減算も可能。 ―――――――――――――――― 保存に成功すれば、データ弄りは完了。 今までのThernionがオルトロスなら、今のThernionはティアマト。 では最後に、このデータをTQに反映させるための仕上げになる。 手順5 『database再加工』 無事Thernionを強化することに成功したので、 この新データを新しいdatabase.arzとして作り直す必要がある。 やり方は超簡単、さっきから開きっぱなしのArtManagerを見る。 ツールタブ Buildでrecords内部のdatabaseの加工が始める。 結構時間が掛かるので注意。 描こうが終了すると、databaseファイルはArtManagerが指定したフォルダにアーカイブを作っている。 この場合は、手順1で解説したとおりC \Program Files\THQ\Titan Quest\Build。 いくつかフォルダを移動すると、26MB程度のTest.arzが出来ているはず。 (出来てなかったらエラーが起きてる。 本当ならデータ改変も出来ないはずなので、謎のエラーということになる。 もしそうなったら、ググったり海外のフォーラムで専門家に聞け) 手順6 『差し替えて起動』 C \Program Files\THQ\Titan Quest\databaseの中にある、database.arzを適当な名前にリネームしたら、 Test.arzをdatabase.arzにリネームして、上のファイルと差し替える。 あとはいつも通りTQを起動するだけで、超Alcaneloreの使えるTQがプレイできるはず。 (この方法で作成したMODを使用した場合、 チュポン撃破後に出現するクリアポータルが出現しないバグが発生する。 各Actを終了させたい場合は、一度デフォルトのDatabaseに戻してからチュポンを倒し、 ゲートをくぐってから、もう一度Modを入れ直せばいい) 完 RadiusだのModiferだのといったゲームらしい英語さえわかれば、Editorの使い方は非常に簡単。 強いて言うとすれば、ちゃんとやろうとすると時間が掛かるのは底なしってコト。 複数のファイルを同時で一括に編集するといったことも出来るので、 ある程度の時間短縮は可能。 わからなかった人は、なにからなにまでググってみよう。 というか↓のサイトが読めれば、MODについては1から10まで理解できる。 http //titanquestvault.ign.com/ 読めなかったらエキサイト翻訳↓。 http //www.excite.co.jp/world/ 改造したTQはシングルorLANでしか遊べないので注意。 LANでマルチをする場合は、他のPCにも同じdatabaseを配る必要がある。 Ping高くても外人とブイブイ言わせるぜー、みたいな人には縁がない世界のはず。 TQ改造したら起動しなくなったとか、改造が上手くいかなかった、 という問題について、当ページは一切解答しないと思われます。 Wiki管理人やその他勤勉な編集者各位のGoサインがない限りは、 ここらのコメントログで聞くのもやめといた方が良いと思われます。 2chの現行スレなんかも同様にオススメしない。 真剣にこの頁に書いてあるようなことを実行したいなら、 http //titanquestvault.ign.com/にて勉強するといいでしょう。
https://w.atwiki.jp/vagante_jp/pages/118.html
Mod作成方法 当ページでは、Modの作り方について紹介する。 概要 Vaganteのプレイヤーキャラや敵の画像、音楽などは、data.vraファイルで管理されている。 data.vraファイル内で管理されているキャラクター画像などを参考に、自作の画像を作成し、data.vraの画像と差し替える事で、自作した画像でゲームをプレイする事ができる。 ただし、data.vraは1つのファイルとなっており、編集できないようになっている為、後述の紹介ページに記載されている通り、アンパックツールでdata.vraの内部データを取得したりする必要がある。 以下、data.vraのイメージ図(フォルダ構成は一部省略してます) スキンMODの作り方 燻丸様のページで作り方の説明があるので、こちらを参考にすると良いでしょう。 燻丸のメモ帳_スキンMODの作り方 インストーラーの紹介 従来のmodの適用方法の場合は、手動でmodsフォルダにmodを格納し、その後にPowerShellの実行を行う必要があったが、このインストーラーを使うことにより、「従来のmod適用方法」または「data.vraへの直接インストール」を選ぶことが出来る。 インストーラーの使い方などについては、下記ページを参照。 ちくぼん_インストーラーの解説 ちくぼん_インストーラーのダウンロード先 コメント欄 名前 最新40件を表示しています。Mod作成方法_ログ全文 コメント左側の◯をクリックしてから書き込むと、レス形式でコメントできます。
https://w.atwiki.jp/akasatanahama/pages/105.html
概要 インベントリを持ち、アイテムを保持できるTileEntityを追加する。 GUIの実装はしていない。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; @Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION) public class AluminiumMod { public static final String MODID = "AluminiumMod"; public static final String MODNAME = "Aluminium Mod"; public static final String VERSION = "1.0.0"; public static Block chestAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { chestAluminium = new BlockAluminiumChest() .setBlockName("chestAluminium") .setBlockTextureName("aluminiummod Aluminium_Chest"); GameRegistry.registerBlock(chestAluminium, "chestAluminium"); GameRegistry.registerTileEntity(TileEntityAluminiumChest.class, "TileEntityAluminiumChest"); } } BlockAluminiumChest.java package tutorial.aluminiummod; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockAluminiumChest extends Block implements ITileEntityProvider { private Random random = new Random(); public BlockAluminiumChest() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabDecorations); this.setHardness(5.0F); this.setResistance(1.0F); this.setStepSound(soundTypeMetal); isBlockContainer = true; } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityAluminiumChest(); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { // TileEntityを取得し、プレイヤーが手にアイテムを持っていないなら取り出し、持っているなら入れる。 TileEntity tileEntity = world.getTileEntity(x, y, z); if (tileEntity == null || !(tileEntity instanceof TileEntityAluminiumChest)) return false; TileEntityAluminiumChest chest = (TileEntityAluminiumChest) tileEntity; if (player.getHeldItem() == null) { player.inventory.mainInventory[player.inventory.currentItem] = chest.tryExportItemStack(); } else { if (chest.tryImportItemStack(player.getHeldItem())) { player.inventory.mainInventory[player.inventory.currentItem] = null; } } return true; } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // TileEntityの内部にあるアイテムをドロップさせる。 TileEntityAluminiumChest tileentity = (TileEntityAluminiumChest) world.getTileEntity(x, y, z); if (tileentity != null) { for (int i = 0; i tileentity.getSizeInventory(); i++) { ItemStack itemStack = tileentity.getStackInSlot(i); if (itemStack != null) { float f = random.nextFloat() * 0.6F + 0.1F; float f1 = random.nextFloat() * 0.6F + 0.1F; float f2 = random.nextFloat() * 0.6F + 0.1F; while (itemStack.stackSize 0) { int j = random.nextInt(21) + 10; if (j itemStack.stackSize) { j = itemStack.stackSize; } itemStack.stackSize -= j; EntityItem entityItem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemStack.getItem(), j, itemStack.getItemDamage())); if (itemStack.hasTagCompound()) { entityItem.getEntityItem() .setTagCompound(((NBTTagCompound) itemStack.getTagCompound().copy())); } float f3 = 0.025F; entityItem.motionX = (float) random.nextGaussian() * f3; entityItem.motionY = (float) random.nextGaussian() * f3 + 0.1F; entityItem.motionZ = (float) random.nextGaussian() * f3; world.spawnEntityInWorld(entityItem); } } } world.func_147453_f(x, y, z, block); } super.breakBlock(world, x, y, z, block, meta); } } TileEntityAluminiumChest.java package tutorial.aluminiummod; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityAluminiumChest extends TileEntity implements IInventory { protected ItemStack[] itemStacks = new ItemStack[54]; protected byte importingSlot; protected byte exportingSlot; public boolean tryImportItemStack(ItemStack itemStack) { for (int i = 0; i this.getSizeInventory(); i++) { importingSlot = this.getNextSlot(importingSlot); if (itemStacks[importingSlot] == null) { itemStacks[importingSlot] = itemStack.copy(); return true; } } return false; } public ItemStack tryExportItemStack() { for (int i = 0; i this.getSizeInventory(); i++) { exportingSlot = this.getNextSlot(exportingSlot); if (itemStacks[exportingSlot] != null) { ItemStack itemStack = itemStacks[exportingSlot].copy(); itemStacks[exportingSlot] = null; return itemStack; } } return null; } protected byte getNextSlot(byte slot) { slot++; if (slot = this.getSizeInventory()) slot = 0; return slot; } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i itemStacks.length; i++) { if (itemStacks[i] == null) continue; NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("Slot", (byte) i); itemStacks[i].writeToNBT(nbt1); nbttaglist.appendTag(nbt1); } nbt.setTag("Items", nbttaglist); nbt.setByte("ImportingSlot", importingSlot); nbt.setByte("ExportingSlot", exportingSlot); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); itemStacks = new ItemStack[54]; for (int i = 0; i nbttaglist.tagCount(); i++) { NBTTagCompound nbt1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbt1.getByte("Slot"); if (0 = b0 b0 itemStacks.length) { itemStacks[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } importingSlot = nbt.getByte("ImportingSlot"); exportingSlot = nbt.getByte("ExportingSlot"); } @Override public int getSizeInventory() { return 54; } @Override public ItemStack getStackInSlot(int slot) { return itemStacks[slot]; } @Override public ItemStack decrStackSize(int slot, int amount) { if (itemStacks[slot] == null) return null; ItemStack itemstack; if (itemStacks[slot].stackSize = amount) { itemstack = itemStacks[slot]; itemStacks[slot] = null; return itemstack; } itemstack = itemStacks[slot].splitStack(amount); if (itemStacks[slot].stackSize 1) { itemStacks[slot] = null; } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { itemStacks[slot] = itemStack; if (itemStack != null itemStack.stackSize this.getInventoryStackLimit()) { itemStack.stackSize = this.getInventoryStackLimit(); } } @Override public boolean hasCustomInventoryName() { return false; } @Override public String getInventoryName() { return "container.AluminiumMod.AluminiumChest"; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) = 64.0D; } @Override public void openInventory() {} @Override public void closeInventory() {} @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return true; } } 解説 GameRegistry void registerTileEntity(Class ? extends TileEntity tileEntityClass, String id) TileEntityをマップに追加する処理。 これをやらないとreadFromNBTが呼ばれず、エラーが出る。 Block boolean isBlockContainer TileEntityを持つブロックかどうか。 使われてないようだが一応設定しておく。 boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) ブロックが右クリックされた時の処理。 void breakBlock(World world, int x, int y, int z, Block block, int meta) ブロックが破壊された時の処理。 ITileEntityProvider TileEntityを持つブロックのためのインターフェース。 TileEntity createNewTileEntity(World world, int meta) TileEntityのインスタンスを生成し返す。 TileEntity void writeToNBT(NBTTagCompound nbt) 引数のNBTにTileEntityのデータを書き込む処理。 void readFromNBT(NBTTagCompound nbt) 引数のNBTからTileEntityのデータを読み込む処理。 IInventory インベントリを持つTileEntityのためのインターフェース。 int getSizeInventory() インベントリのスロット数を返す。 ItemStack getStackInSlot(int slot) 引数のスロットに入っているItemStackを返す。 ItemStack decrStackSize(int slot, int amount) 第一引数のスロットに入ってるItemStackのスタック数を第二引数の量減らす。 ItemStack getStackInSlotOnClosing(int slot) GUIが閉じられた時に、引数のスロットの中身を返し、消す処理。 エンチャントテーブルなど、GUIを閉じたときにドロップするものが使う。 void setInventorySlotContents(int slot, ItemStack itemStack) 引数のスロットの中身を設定する。 boolean hasCustomInventoryName() 名札でつけられた名前を持つかどうか。 String getInventoryName() デフォルトの名前を返す。 int getInventoryStackLimit() インベントリのスタック数の最大値を返す。 boolean isUseableByPlayer(EntityPlayer player) 引数のプレイヤーがGUIを開けるかどうか。 void openInventory() GUIを開いたときの処理。 void closeInventory() GUIを閉じたときの処理。 boolean isItemValidForSlot(int slot, ItemStack itemStack) ホッパーなどが引数のスロットにアクセスできるかを返す。 使用例 プレゼントボックスを追加している部分。 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /** * @author Akasata Nahama */ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String MCVERSION = "1.7.10"; public static final String OMVERSION = "1.1.0"; public static final String VERSION = "[" + MCVERSION + "]" + OMVERSION; /*略*/ /** 初期化前処理。 */ @EventHandler public void preInit(FMLPreInitializationEvent event) { /*略*/ OfalenModBlockCore.registerBlock(); /*略*/ } /*略*/ } OfalenModBlockCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModBlockCore { /*略*/ public static Block boxPresentOfalen; /** ブロックを登録する処理。 */ public static void registerBlock() { /*略*/ boxPresentOfalen = new BlockPresentBox() .setBlockName("boxPresentOfalen") .setBlockTextureName("ofalenmod present_box"); GameRegistry.registerBlock(boxPresentOfalen, "boxPresentOfalen"); GameRegistry.registerTileEntity(TileEntityPresentBox.class, "TileEntityOfalenPresentBox"); } } BlockPresentBox.java package nahama.ofalenmod.block; /*略*/ public class BlockPresentBox extends Block implements ITileEntityProvider { private Random random = new Random(); /** 0 下,1 上,2 横,3 クリスマス下,4;クリスマス上,5 クリスマス横 */ private IIcon[] iicon = new IIcon[6]; public BlockPresentBox() { super(Material.sponge); this.setCreativeTab(OfalenModCore.tabOfalen); this.setHardness(1.0F); this.setResistance(1.0F); this.setStepSound(Block.soundTypeCloth); } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPresentBox(); } /*略*/ /** ブロックが破壊された時の処理。 */ @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // TileEntityの内部にあるアイテムをドロップさせる。 TileEntityPresentBox tileentity = (TileEntityPresentBox) world.getTileEntity(x, y, z); if (tileentity != null) { for (int i = 0; i tileentity.getSizeInventory(); i++) { ItemStack itemStack = tileentity.getStackInSlot(i); if (itemStack != null) { float f = random.nextFloat() * 0.6F + 0.1F; float f1 = random.nextFloat() * 0.6F + 0.1F; float f2 = random.nextFloat() * 0.6F + 0.1F; while (itemStack.stackSize 0) { int j = random.nextInt(21) + 10; if (j itemStack.stackSize) { j = itemStack.stackSize; } itemStack.stackSize -= j; EntityItem entityItem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemStack.getItem(), j, itemStack.getItemDamage())); if (itemStack.hasTagCompound()) { entityItem.getEntityItem().setTagCompound(((NBTTagCompound) itemStack.getTagCompound().copy())); } float f3 = 0.025F; entityItem.motionX = (float) random.nextGaussian() * f3; entityItem.motionY = (float) random.nextGaussian() * f3 + 0.1F; entityItem.motionZ = (float) random.nextGaussian() * f3; world.spawnEntityInWorld(entityItem); } } } world.func_147453_f(x, y, z, block); } super.breakBlock(world, x, y, z, block, meta); } /** ブロックのアイコンを登録する処理。 */ @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { for (int i = 0; i 6; i++) { iicon[i] = register.registerIcon(this.getTextureName() + "-" + i); } } /** ブロックのアイコンを返す。 */ @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { int i = 2; if (side == 0) i = 0; if (side == 1) i = 1; if (OfalenModAnniversaryHandler.isChristmas) i += 3; return iicon[i]; } } TileEntityPresentBox.java package nahama.ofalenmod.tileentity; import nahama.ofalenmod.handler.OfalenModAnniversaryHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityPresentBox extends TileEntity implements IInventory { protected ItemStack[] itemStacks = new ItemStack[54]; protected String owner; /*略*/ @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i itemStacks.length; i++) { if (itemStacks[i] == null) continue; NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("Slot", (byte) i); itemStacks[i].writeToNBT(nbt1); nbttaglist.appendTag(nbt1); } nbt.setTag("Items", nbttaglist); nbt.setString("Owner", owner); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); itemStacks = new ItemStack[54]; for (int i = 0; i nbttaglist.tagCount(); i++) { NBTTagCompound nbt1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbt1.getByte("Slot"); if (0 = b0 b0 itemStacks.length) { itemStacks[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } owner = nbt.getString("Owner"); } /** インベントリのスロット数を返す。 */ @Override public int getSizeInventory() { return 54; } /** スロットのアイテムを返す。 */ @Override public ItemStack getStackInSlot(int slot) { return itemStacks[slot]; } /** スロットのスタック数を減らす。 */ @Override public ItemStack decrStackSize(int slot, int amount) { if (itemStacks[slot] == null) return null; ItemStack itemstack; if (itemStacks[slot].stackSize = amount) { itemstack = itemStacks[slot]; itemStacks[slot] = null; return itemstack; } itemstack = itemStacks[slot].splitStack(amount); if (itemStacks[slot].stackSize 1) { itemStacks[slot] = null; } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } /** スロットの中身を設定する。 */ @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { itemStacks[slot] = itemStack; if (itemStack != null itemStack.stackSize this.getInventoryStackLimit()) { itemStack.stackSize = this.getInventoryStackLimit(); } } /** 金床で設定された名前を持つかどうか。 */ @Override public boolean hasCustomInventoryName() { return false; } /** インベントリの名前を返す。 */ @Override public String getInventoryName() { return "container.OfalenMod.PresentBox"; } /** このインベントリの最大スタック数を返す。 */ @Override public int getInventoryStackLimit() { return 64; } /** プレイヤーが使用できるかどうか。 */ @Override public boolean isUseableByPlayer(EntityPlayer player) { if (owner != null !player.getCommandSenderName().equals(owner)) return false; return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) = 64.0D; } @Override public void openInventory() {} @Override public void closeInventory() {} /** スロットにアクセスできるかどうか。 */ @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } } コメント この項目に関する質問などをどうぞ。 名前
https://w.atwiki.jp/kicchan0211/pages/20.html
minecrat flan s mod 導入方法 導入に必要なmod 前提mod minecraft forege universal 本体 Flans Mod 2.0 for Minecraft 1.4.6 Universal 補助みたいなやつ Parts Pack Ye Olde Pack WW2 Pack Modern Weapons Pack Nerf Pack です それぞれDLしてください DLしたらまず前提modであるforgeをjarにいれましょう パッチャーを使って入れてもいいし, 7-zipを使って入れてもいいです 入れたら まずマイクラを起動してください 起動できたら 一旦マイクラを落としてください おとしたら .minecraftの中にmodsというフォルダが出来ているはずです modsの中に先ほどDLした Flans Mod 2.0 for Minecraft 1.4.6 Universal を入れてください (ZIPファイルのままでいいです) 入れたら一度マイクラを起動してください 先ほどと同じです 起動して動いたらまたですが マイクラを落としてください 落としたら、.minecraftの中にflanというファイルが生成されているはずです その生成されたflanのなかに 先ほどDLした Parts Pack Ye Olde Pack WW2 Pack Modern Weapons Pack Nerf Pack を解凍して、中のファイルをflanに入れてください それで起動して動いたら成功です!
https://w.atwiki.jp/wows_sengiken/pages/16.html
旭日旗MOD 日本海軍の艦船に掲揚されている日章旗を旭日旗に変更するMOD。 旭日旗MOD機能 入手方法 導入方法 注意事項 使用イメージ 旗ファイル画像 コメント 機能 日本海軍の艦船に掲揚されている日章旗を旭日旗に変更する。 入手方法 旭日旗MOD - WoWS戦技研 (当ページ) ダウンロード [WoWS_Kyokujitsu-ki_0521.zip / 452.37 KB] (0.5.2.1) 旧バージョン向け ダウンロード [WoWS_Kyokujitsu-ki_0520.zip / 444.75 KB] (0.5.2.0) ダウンロード [WoWS_Kyokujitsu-ki_0514.zip / 437.16 KB] (0.5.1.4) ダウンロード [WoWS_Kyokujitsu-ki_0513.zip / 437.16 KB] (0.5.1.3) ダウンロード [WoWS_Kyokujitsu-ki_0512.zip / 426.19 KB] (0.5.1.2) ダウンロード [WoWS_Kyokujitsu-ki_0510.zip / 426.19 KB] (0.5.1.0) ダウンロード [WoWS_Kyokujitsu-ki_0502.zip / 198.92 KB] (0.5.0.2) ダウンロード [WoWS_Kyokujitsu-ki_0501.zip / 198.92 KB] (0.5.0.1) ダウンロード [WoWS_Kyokujitsu-ki_0500.zip / 198.92 KB] (0.5.0.0) ダウンロード [Kyokujitsu-ki_0411.zip / 198.92 KB] (0.4.1.1) ダウンロード [Kyokujitsu-ki_0410.zip / 198.74 KB] (0.4.1.0) ダウンロード [Kyokujitu-ki0406.zip / 100.92 KB] (0.4.0.6) ダウンロード [Kyokujitu-ki0405.zip / 279.21 KB] (0.4.0.5) ダウンロード [Kyokujitu-ki0403.zip / 279.21 KB] (0.4.0.3) ダウンロード [Kyokujitu-ki040a.zip / 279.67 KB] (0.4.0) ダウンロード [RSF_031.zip / 97.72 KB] (0.3.1) ダウンロード [RSF_030rev2.zip / 4.18 KB] (0.3.0) 導入方法 WoWSクライアントのバックアップコピーを作成する。 ダウンロードしたファイルを解凍し、"res_mods"フォルダをWoWSクライアントのインストール先フォルダ("WorldOfWarships.exe"ファイルと同じフォルダ)にコピーする。 注意事項 リージョンによってフォーラムポリシーでの旭日旗に対する扱いが異なるため、フォーラムにスクリーンショット等を投稿する際には注意が必要。 ASIAフォーラム にスクリーンショットを投稿する際は、旭日旗が表示されないように画像を加工する必要がある。 ※ モザイクを掛けても不可。 NAフォーラム にスクリーンショットを投稿する際は、旭日旗部分に「ぼかし」を入れる必要がある。 RUフォーラム にスクリーンショット等を投稿する際は、ロシア語で投稿する必要がある(Google翻訳でOK&旭日旗への加工等は不要)。 EUフォーラム でのスクリーンショット等の投稿は、各言語エリアの指定された言語で投稿する限りは問題なし。NA/ASIAと同様、 禁止されている 。 (2015-09-23更新) 使用イメージ (着用モデルは、後ろ姿も豊満なぱんぱかぱ~んさん) 旗ファイル画像 コメント 有志の作成を待つしかない 待つのが無理なら自分でGinpでも使って作れば? -- (名無しさん) 2016-05-12 19 55 14 http //fileup.jp/up/13408.zip.html その場しのぎでよければVer0.5.5.1対応確認してる -- (名無しさん) 2016-05-14 00 00 58 元の旗データがどこにあるかわからないから加工のしようが素人には無いな… 毎度日章旗だけ場所入れ替えて海賊旗にするのはただの嫌がらせだよな。 -- (名無しさん) 2016-05-16 01 50 06 http //fileup.jp/up/13469.zip.html [WoWs]旭日旗MOD[0.5.5.1対応].zipを弄ってノッペリ感を補正してみた。 -- (名無しさん) 2016-05-17 21 22 58 http //fileup.jp/up/13483.zip.html ほかのフラッグまで効果が及んでいたのを修正。 -- (名無しさん) 2016-05-18 21 46 20 また、海賊旗になってます 修正お願いします -- (名無しさん) 2016-05-29 11 50 20 WoWs 旭日旗MOD 0.5.6.0で検索すると上げてくれてる人が居る。いつも更新がその日のうちで助かる。 -- (名無しさん) 2016-05-29 20 15 29 Macでも導入可能な物を作ってください -- (名無しさん) 2016-05-31 06 59 53 http //ch.nicovideo.jp/Minakami-F/blomaga/ar962791 ここ行け -- (名無しさん) 2016-06-29 21 20 56 0.5.9用の旭日旗modを作りましたので、私のDropboxに上げておきます。 https //www.dropbox.com/s/x8n612igdjibdd3/Kyokujitsu-ki-ver.0.5.9_20160729.zip?dl=0 -- (名無しさん) 2016-07-29 21 07 39 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/minekouzyou/pages/16.html
導入済みサーバーMODプラグイン CraftBukkit #740 (サーバーMOD) Permissions (ユーザー&グループ管理プラグイン) AdminCmd (コマンドプラグイン) iZone (エリア保護&エリア効果指定プラグイン) Lockette (ドア&チェスト保護プラグイン) Ex-Explosions (TNT爆破制御プラグイン) groupPvP (グループダメージ制御プラグイン) NoSpawn (動物&モンスタースポーン制御プラグイン) kFeatherTeleport (テレポートプラグイン) MagicCarpet (テレポートプラグイン) BlockHead (ブロック頭装備プラグイン) PrivateChat (パーティ&プライベートチャットプラグイン) できれば導入したいサーバーMODプラグイン プレイヤーネームの色を変更できるプラグイン チーム分けのために必要。キャラクターの頭の上に表示する名前の色を変更する。 色分けが可能であれば、BlockHeadはいらなくなる。→コマンド入力省略可 しかし無理であるなら、スキン or 防具で代用 → 現在はBlockHeadを使用中 リスポーンした場合、装備をドロップできなくするプラグイン(アイテムは除く) BlockHead使用時、装備アイテムもドロップすることにより、リスポーンする度に"/hat"と入力する必要がある。 その入力を省略できるようなプラグインの導入が望ましい。・・・アイテムドロップとは別は可能なのだろうか?
https://w.atwiki.jp/sandbox2-wiki/
CryEngine2 Sandbox2 wiki Electronic Arts社の「Crysis」に付属する「CryEngine2 Sandbox2」の情報です。 どなたでも編集、修正が可能ですので、新情報や誤情報などがありましたら改筆の方お願い致します。 項目荒らし、ページ荒らしを繰り返した場合、Wikiの編集及び閲覧を禁止にする場合があります。 あまりにもひどい場合はIP確認後ISPに通報させていただきます。 当ページで掲載されている画像の著作権は全てElectronic Arts社に帰属いたします。 Wikiに編集参加される方々へ 画像うp権限誰でもに変更し忘れてたのを変更しときました。 最新パッチの情報 本体 Crysis Hotfix 1.21 - 1.21 パッチ1.2をインストール後にインストール。 Sandbox2 Sandbox1.2 本体パッチ1.2に対応するバージョン。ゲームソースコードと見本を含むCrysisのための最先端のSDK。 New Topics Crysis開発終了 海外は11/16、完全日本語版は11/29発売 4gamerにCrysisSPDEMOがアップ Crysis リンク Crysis米公式 Electronic Arts